<%@page import="java.util.Enumeration"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>jsp request</title>
 
</head>
<body>


URL拼接1 (带端口)<br>
request.getScheme() + "://" + request.getServerName()  + ":" + request.getServerPort() +  request.getRequestURI()+"?" + request.getQueryString() <br>
<%=request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()+ request.getRequestURI()+"?" + request.getQueryString()%><br>
URL拼接2<br>
request.getScheme() + "://" + request.getServerName() +  request.getContextPath()+  request.getServletPath()+"?" + request.getQueryString()<br>
<%=request.getScheme() + "://" + request.getServerName() +  request.getContextPath()+  request.getServletPath()+"?" + request.getQueryString()%><br>
<br>

<table border="1">
<tr><th>方法</th><th>值</th><th style="width:600px;">说明</th></tr>
<tr>
    
    <td>request.getScheme()</td><td><%=request.getScheme()%></td>
	<td>返回请求所使用的URL的模式。例如，对于一个HTTP请求，这个模式就是http</td>
</tr>
<tr>
    <td>request.getServerName()</td><td><%=request.getServerName()%></td>
	<td>返回接收请求的服务器的主机名。</td>
</tr>
<tr>
    <td>request.getServerPort()</td>
	<td><%=request.getServerPort()%></td>
	<td>返回接收请求的端口号。</td>
</tr>
<tr>
    <td>request.getContextPath()</td><td><%=request.getContextPath()%></td><td>返回站点的根路径</td>
</tr>
<tr>
    <td>request.getServletPath()</td><td><%=request.getServletPath()%></td>
	<td>这个方法返回请求URL反映调用Servlet的部分。例如，一个Servlet被映射到/catalog/summer这个URL路径，而一个请求使用了/catalog/summer/casual这样的路径。所谓的反映调用Servlet的部分就是指/catalog/summer。如果这个Servlet不是通过路径匹配来调用。这个方法将返回一个空值。
    </td>
</tr>
<tr>
    
	<td>request.getRequestURI()</td><td><%=request.getRequestURI()%></td>
    <td>从HTTP请求的第一行返回请求的URL中定义被请求的资源的部分。如果有一个查询字符串存在，这个查询字符串将不包括在返回值当中。例如，一个请求通过 /catalog/books?id=1这样的URL路径访问，这个方法将返回/catalog/books。这个方法的返回值包括了Servlet路径 和路径信息。
    如果这个URL路径中的的一部分经过了URL编码，这个方法的返回值在返回之前必须经过解码。</td>
</tr>
<tr>
    <td>request.getQueryString()</td><td><%=request.getQueryString()%></td>
	<td>返回这个请求URL所包含的查询字符串。一个查询字串符在一个URL中由一个“？”引出。如果没有查询字符串，这个方法返回空值。</td>
</tr>

<tr> 
    <td>request.getMethod()</td><td><%=request.getMethod()%></td>
    <td>返回这个请求使用的HTTP方法（例如：GET、POST、PUT）</td> 
</tr>
<tr> 
    <td>request.getAuthType()</td><td><%=request.getAuthType()%></td>
    <td>返回这个请求的身份验证模式。</td> 
</tr>
<tr> <td>request.getRemoteAddr()</td> <td><%=request.getRemoteAddr() %></td> <td>客户端IP</td> </tr>
<tr> <td>request.getRemoteHost()</td> <td><%=request.getRemoteHost() %></td> <td>客户端主机名</td> </tr>
<tr> <td>request.getCharacterEncoding()</td> <td><%=request.getCharacterEncoding() %></td> <td>编码</td> </tr>
<tr> <td>request.getContentLength()</td> <td><%=request.getContentLength() %></td> <td>所发送的字节数</td> </tr>
<tr> <td>request.getPathInfo()</td> <td><%=request.getPathInfo() %></td> 
        <td>URL中的附加路径信息： 输出:URL中Servlet路径之后、查询字符串之前的那部分。</td> 
 </tr>
<tr> <td>request.getPathTranslated()</td> <td><%=request.getPathTranslated() %></td> <td>映射到服务器实际路径之后的路径信息</td> </tr>
<tr> <td>request.getRemoteUser()</td> <td><%=request.getRemoteUser() %></td> <td>如果提供了Authorization头，则代表其用户部分。它代表发出请求的用户的名字。</td> </tr>
<tr> <td>request.getRequestedSessionId() </td> <td><%=request.getRequestedSessionId() %></td> <td>输出SessionId</td> </tr>
 

<tr> <td>request.getHeader("user-agent")</td> <td><%=request.getHeader("user-agent") %></td> <td>和下面的一样，看起来不区分大小写的</td> </tr>
<tr> <td>request.getHeader("User-Agent")</td> <td><%=request.getHeader("User-Agent") %></td> <td>和上面的一样，看起来不区分大小写的</td> </tr>
<tr> <td>request.getHeader("Referer")</td> <td><%=request.getHeader("Referer") %></td> <td></td> </tr>
<tr> <td>request.getHeader("Accept-Language")</td> <td><%=request.getHeader("Accept-Language") %></td> <td></td> </tr>
<tr> <td>request.getHeader("Accept-Encoding")</td> <td><%=request.getHeader("Accept-Encoding") %></td> <td></td> </tr>
<tr> <td>request.getHeader("Cookie")</td> <td><%=request.getHeader("Cookie") %></td> <td></td> </tr>
<tr> <td>request.getHeader("Accept")</td> <td><%=request.getHeader("Accept") %></td> <td></td> </tr>
<tr> <td>request.getHeader("Host")</td> <td><%=request.getHeader("Host") %></td> <td></td> </tr>
<tr> <td>request.getHeader("Connection")</td> <td><%=request.getHeader("Connection") %></td> <td></td> </tr>

<tr><td colspan="3">### request.getHeaderNames()遍历的 ###</td></tr>

<%
Enumeration<?>  enums = request.getHeaderNames();
while (enums.hasMoreElements()) {
	String key = (String) enums.nextElement();//Header
	out.print("<tr><td>request.getHeader(\""+key+"\")</td><td>"+request.getHeader(key)+"</td><td></td></tr>");
}
%>

<tr> <td></td> <td></td> <td></td> </tr>
<tr> <td></td> <td></td> <td></td> </tr>	
	
	
</table>

 

</body>
</html>